/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package com.invoice.model.dao;


import com.invoice.busines.dto.CajaChicaDTO;
import com.invoice.exceptions.InvoiceException;
import com.invoice.model.entities.Cajachica;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Logger;
import org.hibernate.Query;

/**
 *
 * @author meliMeli
 */
public class CajaChicaDAOHibernate extends DAOGenerico implements CajaChicaDAO{
    Logger logger =Logger.getLogger(CajaChicaDAOHibernate.class.getName());
   // CajaChicaDAOHibernate cajachicaDAO = new CajaChicaDAOHibernate();
    
    
    
    @Override
    public Cajachica convertDTOtoPojo(Object object) {
        if(object==null){
            return null;
        }
        
        CajaChicaDTO cajachicaDTO = (CajaChicaDTO)object;
        Cajachica cajachica = new Cajachica();
        cajachica.setIdCajaChica(cajachicaDTO.getIdCajaChica());
        cajachica.setFecha(cajachicaDTO.getFecha());
        cajachica.setInicioDia(cajachicaDTO.getResinicioDia());
        cajachica.setSalidas(cajachicaDTO.getRessalidas());
        cajachica.setTotal(cajachicaDTO.getTotal());
        cajachica.setVentas(cajachicaDTO.getVentas());
      
        return cajachica;
    }

    @Override
    public CajaChicaDTO convertPojotoDTO(Object object) {
        Cajachica cajachica = (Cajachica)object;
        CajaChicaDTO cajachicaDTO = new CajaChicaDTO();
        cajachicaDTO.setIdCajaChica(cajachica.getIdCajaChica());
        cajachicaDTO.setFecha(cajachica.getFecha());
        cajachicaDTO.setResinicioDia(cajachica.getInicioDia());
        cajachicaDTO.setRessalidas(cajachica.getSalidas());
        cajachicaDTO.setVentas(cajachica.getVentas());
        cajachicaDTO.setTotal(cajachica.getTotal());
        
        return cajachicaDTO;
    }

    @Override
    public List<CajaChicaDTO> findAll() throws InvoiceException {
        List<CajaChicaDTO> result = new ArrayList<CajaChicaDTO>();
        try {
            startSession();
            Query query=session.createQuery("from Cajachica");
            List<Cajachica> list = (ArrayList<Cajachica>)query.list();
            for (Cajachica cajachica : list) {
                CajaChicaDTO cajachicaDTO=convertPojotoDTO(cajachica);
                result.add(cajachicaDTO);
            }
            transaction.commit();
            return result;
        } catch (Exception e) {
            rollback();
            throw new InvoiceException("Error en busqueda", e);
        }finally{
            closeSession();
        }
    }
    
   
    @Override
    public CajaChicaDTO findByIdCajaChica(Integer idCajaChica) throws InvoiceException {
        try {
            startSession();
            Query query=session.createQuery("from Cajachica where idCajaChica=:idCajaChica").setParameter("idCajaChica", idCajaChica);
            Cajachica cajachica=(Cajachica)query.uniqueResult();
            CajaChicaDTO cajachicaDTO=convertPojotoDTO(cajachica);
            transaction.commit();
            return cajachicaDTO;
        } catch (Exception e) {
            rollback();
            throw new InvoiceException("Error en busqueda", e);
        }finally{
            closeSession();
        }
    }
}